<?php 
class ArticleModel extends Model{
	public $table = 'article';
	/**
	 * 自动验证
	 */
	public $validate = array(
		array('title','nonull','标题不能为空',2,3),
		array('author','nonull','作者不能为空',2,3),
		array('category_cid','regexp:/^[1-9]{1,20}$/','请选择分类',2,3),
		array('content','nonull','内容不能为空',2,3)
	
	);
	/**
	 * 自动完成
	 */
	 public $auto = array(
	 	//1.字段名 2.函数或者是方法名称 3.用什么方式处理 4.条件 5.时机
	 	array('sendtime','time','function',2,1),
	 	array('user_uid','_uid','method',2,1),
	 	array('attr','_attr','method',2,3),
	 );
	 /**
	  * 处理文章属性
	  */
	 public function _attr(){
	 	$attr = Q('post.attr');
		//如果用户有选择attr属性，那么组合成字符串
		if($attr){
			return implode(',', $attr);die;
		}else{
			//否则返回null
			return null;
		}
		
	 }
	 
	 public function _uid(){
	 	//返回$_SESSION['aid']就可以自动存入user_uid字段
	 	return $_SESSION['aid'];
	 }
	
	
	/**
	 * 获得文章和分类的关联数据
	 */
	public function getArcCate(){
		return M()->join('__article__ a JOIN __category__ c ON a.category_cid=c.cid')->where("is_recycle=0")->all();
	}
	
	/**
	 * 添加文章
	 */
	public function addData(){
		if(!$this->create()) return false;
		//如果有上传
		if($_FILES){
			if($_FILES['thumb']['error'] != 4){
				//执行上传类
			 	$upload = new Upload();
				$files = $upload->upload();
				//如果上传 失败
				if(!$files){
					$this->error = $upload->error;
					return false;
				}
				//缩略处理******
				$img = new Image();
				$thumbPath = $img->thumb($files[0]['path']);  
				
				//$this->data 就是 添加要操作的数组，它里面有什么，add就会自动添加什么
				$this->data['thumb'] = $thumbPath;
			}
		}
		//1.article 文章表 ，添加完成之后返回自增id
		$aid = $this->add();
		//2.article_data 文章数据表
		$data = array(
			'keywords' => Q('post.keywords'),
			'description'=> Q('post.description'),
			'content' => $_POST['content'],
			'article_aid' => $aid
		);
		K('ArcData')->add($data);
		//3.article_tag 文章标签中间表
		foreach (Q('post.tagname') as $k => $v) {
			$arc_to_tag = array(
				'article_aid'  => $aid,
				'tag_tid' 	   => $v,
				'category_cid' => Q('post.category_cid'),
				);
			K('ArcTag')->add($arc_to_tag);
		}
		
		return true;
	}

	public function delData($id){
		$data = array(
			'is_recycle' =>1,
			);
		$this->where("aid=$id")->update($data);
		return true;
	}
	public function getRecArticle(){
		return M()->join('__article__ a JOIN __category__ c ON a.category_cid=c.cid')->where("is_recycle=1")->all();

	}
	public function realDel($id){
		$this->where("aid=$id")->del();
		K('ArcTag')->where("article_aid=$id")->del();
		K('ArcData')->where("article_aid=$id")->del();
		return true;
	}
	public function restore($id){
		$data = array(
			'is_recycle' =>0,
			);
		$this->where("aid=$id")->update($data);
		return true;
	}
	public function edit($aid){
		if(!$this->create()) return false;
		//如果有上传
		if($_FILES){
			if($_FILES['thumb']['error'] != 4){
				//执行上传类
			 	$upload = new Upload();
				$files = $upload->upload();
				//如果上传 失败
				if(!$files){
					$this->error = $upload->error;
					return false;
				}
				//缩略处理******
				$img = new Image();
				$thumbPath = $img->thumb($files[0]['path']);  
				
				//$this->data 就是 添加要操作的数组，它里面有什么，add就会自动添加什么
				$this->data['thumb'] = $thumbPath;
			}
		}
		//1.编辑article
		$this->where("aid={$aid}")->update();
		//2.编辑article_data
		K('ArcData')->where("article_aid={$aid}")->update();
		//3.编辑article_tag 中间表
		$arcTagModel = K('ArcTag');
		//先删除中间表
		$arcTagModel->where("article_aid={$aid}")->delete();
		//再添加
		foreach(Q('post.tagname',array()) as $v){
			$data = array(
				'article_aid' => $aid,
				'tag_tid' => $v,
				'category_cid' => Q('post.category_cid')
			);
			$arcTagModel->add($data);
		}
		return true;
	}
	
}





